Skip to main content

Utiliser des points d'arrêt

Les points d'arrêt sont couramment utilisés pour déboguer le programme. CODESYS prend en charge les points d'arrêt dans tous les éditeurs CEI.

Vous pouvez définir des points d'arrêt à des positions spécifiques dans le programme pour forcer l'exécution à s'arrêter là et observer les valeurs des variables. Vous pouvez définir des "points d'arrêt de données" spéciaux pour arrêter l'exécution du programme lorsque la valeur d'une variable spécifique change.

L'arrêt au point d'arrêt ou au point d'arrêt de données peut être soumis à des conditions supplémentaires. Vous pouvez également redéfinir les points d'arrêt et les points d'arrêt de données en tant que "points d'exécution" où le programme ne s'arrête pas, mais exécute à la place un code spécifique.

Astuce

La vue points d'arrêt donne un aperçu de tous les points d'arrêt définis. Il vous fournit des commandes supplémentaires pour modifier plusieurs points d'arrêt à la fois.

Sous l'éditeur, l'état des points d'arrêt et des points d'exécution est signalé par les icônes suivantes :

  • _cds_icon_breakpoint_activated.png: Le point d'arrêt est activé.

  • _cds_icon_breakpoint_deactivated.png: Le point d'arrêt est désactivé.

  • _cds_icon_breakpoint_in_other_instance.png: Le point d'arrêt est défini dans une autre instance du bloc actuellement ouvert dans l'éditeur.

  • _cds_icon_breakpoint_halt.png: Le programme s'arrête au point d'arrêt.

  • _cds_icon_breakpoint_conditional_activated.png: Le point d'arrêt conditionnel est activé.

  • _cds_icon_breakpoint_conditional_deactivated.png: Le point d'arrêt conditionnel est désactivé.

  • _cds_icon_executionpoint_activated.png: Le point d'exécution est activé.

  • _cds_icon_executionpoint_deactivated.png: Le point d'exécution est désactivé.

  • _cds_icon_executionpoint_conditional_activated.png: Le point d'exécution conditionnel est activé.

  • _cds_icon_executionpoint_conditional_deactivated.png: Le point d'exécution conditionnel est désactivé.

  • _cds_icon_data_breakpoint_activated.png: Le point d'arrêt de données est activé.

  • _cds_icon_data_breakpoint_disabled.png: Le point d'arrêt de données est désactivé.

  • _cds_icon_data_breakpoint_halt.png: Le programme s'arrête au point d'arrêt des données.

  • _cds_icon_data_execution_point_enabled.png: Le point d'exécution des données est activé.

  • _cds_icon_data_execution_point_disabled.png: Le point d'exécution des données est désactivé.

  • _cds_icon_data_executionpoint_halt.png: Le programme s'arrête au point d'exécution des données.

  • _cds_icon_data_executionpoint_cond_activated.png: Le point d'exécution conditionnel des données est activé.

  • _cds_icon_data_breakpoint_cond_activated.png: Le point d'arrêt de données conditionnel est activé.

Pour plus d'informations, voir : Points d'arrêt

points d'arrêt de données

Astuce

La fonction des points d'arrêt de données dépend du système cible. Actuellement, les points d'arrêt de données ne sont disponibles qu'avec le CODESYS Control Win possible.

Un point d'arrêt de données interrompt l'exécution du programme lorsque la valeur d'une variable ou d'une adresse mémoire spécifique change. Comme pour les points d'arrêt "normaux", l'arrêt peut être lié à une condition supplémentaire, ou un code spécifique peut être traité à la place de l'arrêt (conversion en un point d'exécution de données).

Vous définissez un point d'arrêt de données avec la commande Nouveau point d'arrêt de données soit depuis le menu déboguer, ou dans la vue points d'arrêt via le bouton Nouvelle. Ce faisant, vous spécifiez un nom de variable qualifié ou directement une adresse mémoire dont les modifications de valeur doivent être surveillées.

Exemple 37. Exemple

Dans l'exemple de code suivant, l'espace mémoire de Variable iNumber involontairement écrasé. Avec un point d'arrêt de données sur la variable iNumber cependant, il est remarqué lorsque sa valeur change. Le traitement s'arrête alors avec un message correspondant à l'accès au tableau, qui écrase la valeur de la variable : Idx = 7.

Voir également ci-dessous : "Définition d'un point d'arrêt de données"

PROGRAM PLC_PRG
VAR
  Idx : INT;
  Ary : ARRAY[0..3] OF BYTE;
  iNumber : INT := 55;
END_VAR
FOR idx := 0 TO 6 DO
  Ary[idx] := 0;
END_FOR


Points d'arrêt dans les applications multitâches

Fondamentalement, le débogage n'est pas possible sur plusieurs tâches en même temps. Tant que vous travaillez sur une tâche avec des points d'arrêt ou pas à pas, les points d'arrêt des autres tâches sont ignorés.

Si un bloc dans lequel un point d'arrêt est défini est utilisé par plusieurs tâches, seule la tâche ("tâche de débogage") qui atteint le point d'arrêt en premier est arrêtée. Toutes les autres tâches continuent de s'exécuter. En dialogue pile d'appels voir quelle tâche est actuellement suspendue.

Si vous souhaitez que seule une tâche spécifique soit affectée par un point d'arrêt, vous pouvez le spécifier dans les propriétés du point d'arrêt.

Les points d'arrêt fonctionnent séparément pour chaque application, de sorte qu'une "interruption sur BP" n'affecte aucune autre application. Cela s'applique également aux applications parent/enfant, même si le point d'arrêt est défini dans un bloc utilisé par plusieurs applications et dont le code ne réside qu'une seule fois sur l'automate.

Important

Les entrées/sorties servies par la "tâche de débogage" ne sont pas mises à jour sur un arrêt au point d'arrêt, même si vous sélectionnez l'option Mettre à jour les E/S à l'arrêt activé dans les paramètres de l'automate.

Astuce

Si l'application sur l'automate est à un point d'arrêt, une modification en ligne ou un téléchargement provoque l'arrêt de toutes les tâches, ce qui signifie que l'automate s'arrête ! Dans ce cas montre CODESYS un message correspondant et vous pouvez décider si vous souhaitez continuer ou non la connexion.

Définition d'un point d'arrêt simple (exemple éditeur ST)

Prérequis : L'application est en ligne et en cours d'exécution. Le mode de fonctionnement est déboguer.

  1. Ouvrez une POU en langage ST dans le Bloc-notes.

  2. Placez le curseur sur la ligne où vous souhaitez définir un point d'arrêt.

  3. Choisissez la commande Déboguer → Basculer le point d'arrêt ou appuyez sur le bouton F9.

    La ligne est marquée en rouge et avec l'icône _cds_icon_breakpoint_activated.png (point d'arrêt activé) marqué. Lorsque le programme est au point d'arrêt, la ligne avec l'icône _cds_icon_breakpoint_halt.png (Arrêt au point d'arrêt) marqué. Le traitement du programme s'arrête. Ceci est affiché dans la barre d'état avec l'état surligné en rouge HALT AUF BP signalé.

  4. Choisissez la commande Déboguer → Lancer ou appuyez sur le bouton F5.

    Le programme continue.

  5. Définissez plus de points d'arrêt et vérifiez les valeurs des variables aux points d'arrêt.

  6. Placez le curseur sur une ligne où vous souhaitez supprimer un point d'arrêt.

  7. Choisissez la commande Débogage → Basculer le point d'arrêt ou appuyez sur le bouton F9.

    La marque disparaît. Le point d'arrêt est supprimé.

Définition d'une condition de point d'arrêt (exemple éditeur ST)

  1. Ouvrez une POU en langage ST dans le Bloc-notes.

  2. Placez le curseur sur la ligne où vous souhaitez définir un point d'arrêt.

  3. Choisissez la commande Débogage → Nouveau point d'arrêt.

    La boîte de dialogue s'ouvre Nouveau point d'arrêt.

  4. Choisissez l'onglet état.

  5. Choisissez dans la rubrique nombre de coups l'option Arrêtez-vous lorsque le nombre de résultats est un multiple de.

    Entrez la valeur 5 dans le champ à droite.

  6. De plus, définissez une condition booléenne lorsque le point d'arrêt doit être actif. Pour cela, activez l'option stop si vrai. Entrez une variable booléenne dans le champ à droite.

  7. Activez l'option Activer le point d'arrêt immédiatement.

  8. Fermez la boîte de dialogue.

    La ligne est marquée en rouge et avec l'icône _cds_icon_breakpoint_conditional_activated.png marqué.

Regardez maintenant le programme en cours. Tant que la variable booléenne de la condition FALSE , la condition du point d'arrêt n'est pas remplie et le programme s'exécute. Si vous définissez la variable sur TRUE définie, la condition est remplie et le programme s'arrête à ce point d'arrêt toutes les 5 exécutions.

Spécification d'un point d'exécution (exemple éditeur ST)

  1. Ouvrez une POU en langage ST dans le Bloc-notes.

  2. Placez le curseur sur la ligne où vous souhaitez définir un point d'exécution.

  3. Choisissez la commande Débogage → Nouveau point d'arrêt.

    La boîte de dialogue s'ouvre Nouveau point d'arrêt.

  4. Choisissez l'onglet Paramètres des points d'exécution.

  5. Activez l'option point d'exécution.

    Tapez dans la case Exécutez le code suivant saisissez l'instruction suivante :

    iCounter := iCounter + 1;

    Tapez dans la case Message de sortie dans le journal de l'appareil saisissez le texte suivant :

    Ausführungspunkt erreicht {iCounter}

  6. Fermez la boîte de dialogue.

Lorsque le programme atteint le point d'exécution, il ne s'arrête pas, mais exécute à la place le code défini ci-dessus. Un message est également émis dans le journal de l'appareil.

Définir un point d'arrêt de données

Prérequis : L'application est en ligne et en cours d'exécution.

  1. Choisissez la commande Affichage → Points d'arrêt.

  2. Choisissez la commande Débogage → Nouveau point d'arrêt de données.

  3. Cliquez dans la boîte de dialogue Nouveau point d'arrêt dans l'onglet Données sur le bouton _cds_icon_input_assistent.png.

  4. Choisissez dans la boîte de dialogue aide à la saisie dans l'onglet surveiller les variables la variable dont la valeur change le programme doit s'arrêter.

    Sinon, tapez dans l'onglet Données Entrez le nom qualifié de la variable directement dans la ligne de saisie. Exemple: PLC_PRG.iNumber. Le nombre exact d'octets à surveiller est appelé Taille spécifié. Une valeur correspondant au type de données est automatiquement spécifiée ici, mais vous pouvez également avoir moins d'octets surveillés.

  5. Sélectionnez dans la vue points d'arrêt la ligne avec le point d'arrêt de données et cliquez sur le bouton _cds_icon_breakpoint_activated_deactivate.png.

    La ligne est marquée et avec l'icône _cds_icon_data_breakpoint_activated.png (Point d'arrêt de données activé). Lorsque le programme atteint le point d'arrêt des données, c'est-à-dire lorsque la valeur de la variable sélectionnée change, l'exécution du programme s'arrête. Dans la partie implémentation du bloc, la ligne suivante est marquée d'une flèche _cds_icon_data_executionpoint_halt.png marqué. Ceci est affiché dans la barre d'état avec l'état surligné en rouge HALT AUF BP signalé.

  6. Choisissez la commande Déboguer → Lancer ou appuyez sur le bouton F5.

    Le programme continue de s'exécuter puis s'arrête à nouveau lorsque la valeur de la variable change à nouveau.